package com.ruoyi.business.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.entity.AppUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 课程模块 course
 *
 * @author 石涛
 * &#064;date  2023-11-02
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("场馆")
public class Course extends BaseEntity {
    /**
     * 课程id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "课程id")
    private Long id;

    /**
     * 课程名称
     */
    @Excel(name = "课程名称")
    @ApiModelProperty(value = "课程名称")
    private String name;

    /**
     * 课程介绍
     */
    @Excel(name = "课程介绍")
    @ApiModelProperty(value = "课程介绍")
    private String intro;

    /**
     * 课程须知
     */
    @Excel(name = "课程须知")
    @ApiModelProperty(value = "课程须知")
    private String notice;

    /**
     * 关联场馆id
     */
    @Excel(name = "关联场馆id")
    @ApiModelProperty(value = "关联场馆id")
    private Long venueId;


    /**
     * 关联场馆Name
     */
    @Excel(name = "关联场馆Name")
    @ApiModelProperty(value = "关联场馆Name")
    private String venueName;

    /**
     * 排序
     */
    @Excel(name = "排序")
    @ApiModelProperty(value = "排序")
    private Long sort;

    /**
     * 关联教练id
     */
    @Excel(name = "关联教练id")
    @ApiModelProperty(value = "关联教练id")
    private Long coachId;

    /**
     * 关联教练Name
     */
    @Excel(name = "关联教练Name")
    @ApiModelProperty(value = "关联教练Name")
    private String coachName;

    /**
     * 是否是banner
     */
    @Excel(name = "是否是banner", readConverterExp = "0=否,1=是")
    @ApiModelProperty(value = "是否是banner")
    private int isBanner;

    /**
     * 是否是热门
     */
    @Excel(name = "是否是热门", readConverterExp = "0=否,1=是")
    @ApiModelProperty(value = "是否是热门")
    private int isHot;

    /**
     * 课程类型
     */
    @Excel(name = "课程类型", readConverterExp = "0=团课 1=精品课 2=特殊课程 3=私教课")
    @ApiModelProperty(value = "课程类型")
    private String type;

    /**
     * 课程难度
     */
    @Excel(name = "课程难度")
    @ApiModelProperty(value = "课程难度")
    private int difficulty;

    /**
     * 私教课预约时间
     */
    @Excel(name = "私教课预约时间")
    @ApiModelProperty(value = "私教课预约时间")
    private String times;

    /**
     * 课程封面
     */
    @Excel(name = "课程封面")
    @ApiModelProperty(value = "课程封面")
    private String covers;

    /**
     * 课程banner图片
     */
    @Excel(name = "课程banner图片")
    @ApiModelProperty(value = "课程banner图片")
    private String images;

    /**
     * 课程开始日期
     */
    @Excel(name = "课程开始日期")
    @ApiModelProperty(value = "课程开始日期")
    private String startDate;

    /**
     * 时间范围
     */
    @Excel(name = "时间范围")
    @ApiModelProperty(value = "时间范围")
    private String timeSlot;

    /**
     * 课程地址
     */
    @Excel(name = "课程地址")
    @ApiModelProperty(value = "课程地址")
    private String address;

    /**
     * 预约人id集合
     */
    @Excel(name = "预约人id集合")
    @ApiModelProperty(value = "预约人id集合")
    private String orderIds;

    /**
     * 排队人id集合
     */
    @Excel(name = "排队人id集合")
    @ApiModelProperty(value = "排队人id集合")
    private String waitIds;

    /**
     * 课程可预约数
     */
    @Excel(name = "课程可预约数")
    @ApiModelProperty(value = "课程可预约数")
    private Long enrollments;

    /**
     * 课程时长（私教课必填）
     */
    @Excel(name = "课程时长（私教课必填）")
    @ApiModelProperty(value = "课程时长（私教课必填）")
    private Long duration;

    /**
     * 课程预约人数
     */
    @Excel(name = "课程预约人数")
    @ApiModelProperty(value = "课程预约人数")
    private Long currentNum;

    @Excel(name = "课程状态", readConverterExp = "0=正常,1=停用")
    @ApiModelProperty(value = "课程状态")
    private String status;

    @Excel(name = "提前多久预约", readConverterExp = "0=否 1=是")
    @ApiModelProperty(value = "提前多久预约")
    private Long offset;

    @Excel(name = "排队人数")
    @ApiModelProperty(value = "可排队人数")
    private Long waitNumber;

    @Excel(name = "排队人数")
    @ApiModelProperty(value = "排队预约人数")
    private Long queueAppointmentNum;

    /**
     * 排队预约人id集合
     */
    @Excel(name = "排队预约人id集合")
    @ApiModelProperty(value = "排队预约人id集合")
    private String waitOrderIds;

    /**
     * 签到人id集合
     */
    @Excel(name = "签到人id集合")
    @ApiModelProperty(value = "签到人id集合")
    private String signIds;

    @Excel(name = "是否需要排队", readConverterExp = "0=否 1=是")
    @ApiModelProperty(value = "是否需要排队")
    private int isWait;

    @Excel(name = "排队须知")
    @ApiModelProperty(value = "排队须知")
    private String waitNotice;

    @TableField(exist = false)
    @ApiModelProperty(value = "教练信息")
    private Coach coachList;

    @TableField(exist = false)
    @ApiModelProperty(value = "用户集合")
    private List<AppUser> userList;
    /**
     * 更新者
     */
    @Getter
    private String createBy;

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    /**
     * 更新者
     */
    @Getter
    private String updateBy;

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }
}
